package com.zjj.lbw.interview.array;

import java.util.Arrays;

/**
 * @author zhanglei.zjj
 * @description 寻找数组中心下标-基于双指针
 * @date 2023/8/31 23:05
 */
public class PivotIndex {
    public static int pivotIndex(int[] arr) {
        int sum = Arrays.stream(arr).sum();
        int leftTotal = 0;

        for (int i = 0; i < arr.length; i++) {
            leftTotal += arr[i];
            // i 左边元素之和多加了当前i位置元素 如果等于 i 右边元素之和多加了当前i位置元素
            // 说明就是中心下标
            if (leftTotal == sum) {
                return i;
            } else {
                // 否则 整个数组元素之和 减去当前元素，
                // 方便计算中心下标 右半边元素之和（下一次比较也只能多加下一次遍历到元素，不能包含本次遍历元素）
                sum -= arr[i];
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1, 7, 3, 6, 5, 6};
        int i = pivotIndex(arr);
        System.out.println(i);
    }
}
